import http from './http'
//
/**
 *  @parms resquest 请求地址 例如：http://197.82.15.15:8088/request/...
 *  @param '/testIp'代表vue-cil中config，index.js中配置的代理
 */
// let resquest = '/api/route.lua'

// 添加UM接口的必须参数，如websocket_name等
function addUmData (params) {
  return params
}

function getBaseUrl (resquest) {
  if (resquest.indexOf('http') === -1) {
    if (process.env.NODE_ENV === 'development') {
      return '/api' + resquest
    } else {
      return resquest
    }
  } else {
    return resquest
  }
}
// get请求
export function getAPI (resquest, params) {
  return http.get(getBaseUrl(resquest), addUmData(params))
}

/**
 * post请求
 * @param {*} resquest 请求的接口地址，例如 /route.lua
 * @param {*} params 接口所需的数据
 * @param {*} cbLastCache （可选）缓存数据回调接口。
 * 缓存规则为：按照resquest+params的md5值为键值进行匹配，存在的话就会回调，不存在则忽略。回调后
 * 还会正常访问接口，接口回来数据后自动更新缓存。此时调用postAPI的地方会继续执行（进入then()方法中）。
 * 缓存数据可以通过 clearApiCache('post') 来清除
 */
export function postAPI (resquest, params, cbLastCache, timeout, config) {
  // 需要上次缓存的数据
  if (cbLastCache) {
    // 更新缓存，并反回数据
    return http.post(getBaseUrl(resquest), addUmData(params), timeout, config).then((response) => {
      return response
    })
  }
  // 不需要缓存
  return http.post(getBaseUrl(resquest), addUmData(params), timeout, config)
}

// put 请求
export function putAPI (resquest, params) {
  return http.put(getBaseUrl(resquest), addUmData(params))
}

// delete 请求
export function deleteAPI (resquest, params) {
  return http.delete(getBaseUrl(resquest), addUmData(params))
}

/**
 * 清除api请求的缓存, 例如：clearApiCache('post') 将会清除所有通过postApi生成的缓存
 * @param {string} name 接口类型名称，可取值：post, get, put, delete
 */
export function clearApiCache (name) {
  for (let i = 0; i < localStorage.length; i++) {
    let key = localStorage.key(i)
    if (key.startsWith(name)) {
      localStorage.removeItem(key)
    }
  }
}
